tachyon[Apache開源分散式存儲系統]

tachyon[Apache開源分散式存儲系統]
更多義項 ▼ 收起列表 ▲

Tachyon是一個高性能、高容錯、基於記憶體的開源分散式存儲系統 ,並具有類Java的檔案API、外掛程式式的底層檔案系統、兼容Hadoop MapReduce和Apache Spark等特徵。Tachyon能夠為集群框架(如Spark、MapReduce等)提供記憶體級速度的跨集群檔案共享服務。Tachyon充分使用記憶體和檔案對象之間的世代(Lineage)信息,因此速度很快,官方號稱最高比HDFS吞吐量高300倍。目前,很多公司(如Pivotal、EMC、紅帽等)已經在使用Tachyon,並且來自20個組織或公司(如雅虎、英特、紅帽等)的60多個貢獻者都在為其貢獻代碼。Tachyon是於UC Berkeley數據分析棧(BDAS)的存儲層,它還是Fedora作業系統自帶套用。

Tachyon簡介

Spark平台以分散式記憶體計算的模式達到更高的計算性能,在最近引起了業界的廣泛關注,其開源社區也十分活躍。以百度為例,在百度內部計算平台已經搭建並運行了千台規模的Spark計算集群,百度也通過其BMR的開放雲平台對外提供Spark計算平台服務。然而,分散式記憶體計算的模式也是一柄雙刃劍,在提高性能的同時不得不面對分散式數據存儲所產生的問題,具體問題主要有以下幾個:

當兩個Spark作業需要共享數據時,必須通過寫磁碟操作。比如:作業1要先把生成的數據寫入HDFS,然後作業2再從HDFS把數據讀出來。在此,磁碟的讀寫可能造成性能瓶頸。

由於Spark會利用自身的JVM對數據進行快取,當Spark程式崩潰時,JVM進程退出,所快取數據也隨之丟失,因此在工作重啟時又需要從HDFS把數據再次讀出。

當兩個Spark作業需操作相同的數據時,每個作業的JVM都需要快取一份數據,不但造成資源浪費,也極易引發頻繁的垃圾收集,造成性能的降低。

1.

當兩個Spark作業需要共享數據時,必須通過寫磁碟操作。比如:作業1要先把生成的數據寫入HDFS,然後作業2再從HDFS把數據讀出來。在此,磁碟的讀寫可能造成性能瓶頸。

2.

由於Spark會利用自身的JVM對數據進行快取,當Spark程式崩潰時,JVM進程退出,所快取數據也隨之丟失,因此在工作重啟時又需要從HDFS把數據再次讀出。

3.

當兩個Spark作業需操作相同的數據時,每個作業的JVM都需要快取一份數據,不但造成資源浪費,也極易引發頻繁的垃圾收集,造成性能的降低。

仔細分析這些問題後,可以確認問題的根源來自於數據存儲,由於計算平台嘗試自行進行存儲管理,以至於Spark不能專注於計算本身,造成整體執行效率的降低。Tachyon的提出就是為了解決這些問題:本質上,Tachyon是個分散式的記憶體檔案系統,它在減輕Spark記憶體壓力的同時賦予了Spark記憶體快速大量數據讀寫的能力。Tachyon把存儲與數據讀寫的功能從Spark中分離,使得Spark更專注在計算的本身,以求通過更細的分工達到更高的執行效率。

tachyon[Apache開源分散式存儲系統] tachyon[Apache開源分散式存儲系統]

圖1: Tachyon的部署

圖1顯示了Tachyon的部署結構。Tachyon被部署在計算平台(Spark,MR)之下以及存儲平台(HDFS, S3)之上,通過全局地隔離計算平台與存儲平台, Tachyon可以有效地解決上文列舉的幾個問題,:

•當兩個Spark作業需要共享數據時,無需再通過寫磁碟,而是藉助Tachyon進行記憶體讀寫,從而提高計算效率。

•在使用Tachyon對數據進行快取後,即便在Spark程式崩潰JVM進程退出後,所快取數據也不會丟失。這樣,Spark工作重啟時可以直接從Tachyon記憶體讀取數據了。

•當兩個Spark作業需要操作相同的數據時,它們可以直接從Tachyon獲取,並不需要各自快取一份數據,從而降低JVM記憶體壓力,減少垃圾收集發生的頻率。

Tachyon重要特徵

•類Java的檔案API: Tachyon的原生API同Java的檔案類非常相似,並提供了InputStream和OutputStream接口,還支持記憶體映射IO;

•兼容MapReduce和Spark:Tachyon實現了Hadoop的FileSystem接口,因此,MapReduce和Spark無需做任何修改就可以使用Tachyon;

•外掛程式式的底層檔案系統:Tachyon基於Hadoop並從底層重建了Hadoop平台。Tachyon具有一個通用、方便於接入不同底層檔案系統的接口。目前支持的檔案系統包括HDFS、S3、GlusterFS、單節點本地檔案系統等,對其他檔案系統的支持將很快實現。

•支持本地原始表:Tachyon提供了對多列數據的本地支持,且提供了選擇項,以決定是否將Hot列放入記憶體以節省空間;

•瀏覽檔案系統的Web界面:用戶能夠通過Web界面瀏覽檔案系統,尤其在Debug模式下,管理員還能夠查看每個檔案的詳細信息,如檔案位置、檢查點(Checkpoint)路徑等;

•支持命令行互動:用戶能夠使用命令“./bin/tachyon tfs”同Tachyon進行互動,如往檔案系統中複製數據以及從檔案系統往外複製數據;

•高容錯性:Tachyon具有良好的容錯機制,Master和Worker都有自己的容錯方式。Master使用ZooKeeper進行容錯,Master中保存的元數據使用Journal進行容錯,Master還對各個Worker的狀態進行監控,發現Worker失效時會自動重啟對應的Worker。對於具體的檔案數據,Tachyon使用世代關係進行容錯。

Tachyon採用了Master-Worker模式,運行中的Tachyon系統由一個Master和多個Worker構成。Tachyon Master管理全部檔案的元數據信息,同時也負責監控各個Tachyon Worker的狀態。為了高效地對檔案進行管理,Tachyon檔案在記憶體中按塊組織。檔案和塊信息保存在Master端,每個Worker以塊為單位進行存儲和管理。

相關詞條

熱門詞條

聯絡我們